#ifndef FILE_MANAGER_H
#define FILE_MANAGER_H

#include <vector>
#include <string>
#include <fstream>
#include "Student.h"
#include "Course.h"
#include "CourseSelection.h"

class FileManager {
private:
    std::string studentFile;    // 学生数据文件路径
    std::string courseFile;     // 课程数据文件路径
    std::string selectionFile;  // 选课数据文件路径
    
    // 私有辅助方法
    template<typename T>
    bool saveData(const std::vector<T>& data, const std::string& filename);
    
    template<typename T>
    bool loadData(std::vector<T>& data, const std::string& filename);

public:
    // 构造函数
    FileManager(const std::string& studentFile = "data/students.dat",
                const std::string& courseFile = "data/courses.dat",
                const std::string& selectionFile = "data/selections.dat");
    
    // 保存数据方法
    bool saveStudents(const std::vector<Student>& students);
    bool saveCourses(const std::vector<Course>& courses);
    bool saveSelections(const std::vector<CourseSelection>& selections);
    
    // 加载数据方法
    bool loadStudents(std::vector<Student>& students);
    bool loadCourses(std::vector<Course>& courses);
    bool loadSelections(std::vector<CourseSelection>& selections);
    
    // 创建必要的目录
    static bool createDirectories();
};

#endif // FILE_MANAGER_H